用于支持win32系统下的多进程,源代码必须宏定义SQLITE_MUTEX_W32才能编译该段代码,mutex_w32.c包含Sqlite在win32系统下互斥体具体实现代码,其实主要是使用win32系统下面的临界区接口。
下图是包含函数名,以及相应功能,顺序从上往下
编号 | 函数名 | 功能 |
---|---|---|
1 | static int mutexIsNT(void) | Win95/98/ME 不支持LockFileEx()mutexIsNT ()用于TryEnterCriticalSection() 的调用 |
2 | static int winMutexHeld(sqlite3_mutex *p) | SQLITE_DEBUG模式下,用于assert()里面使用,主要调试查看变量,防止出BUG,前文说过使用互斥量非常谨慎,如此可见一斑 |
3 | static int winMutexNotheld2(sqlite3_mutex *p, DWORD tid) | SQLITE_DEBUG模式下,用于assert()里面使用,主要调试查看变量,防止出BUG,前文说过使用互斥量非常谨慎,如此可见一斑 |
4 | sstatic int winMutexNotheld(sqlite3_mutex *p) | SQLITE_DEBUG模式下,用于assert()里面使用,主要调试查看变量,防止出BUG,前文说过使用互斥量非常谨慎,如此可见一斑 |
5 | static sqlite3_mutex winMutex_staticMutexes[6] | 初始与取消初始设置 |
6 | static int winMutex_isInit | 静态函数定义 |
7 | static long winMutex_lock | |
8 | static int winMutexInit(void) | 初始化互斥体变量 |
9 | static int winMutexEnd(void) | 删除互斥体变量 |
10 | static sqlite3_mutex *winMutexAlloc(int iType) | 作用是分配6种之一互斥体,并返回指针,如果分配失败,返回相应错误 |
11 | static void winMutexFree(sqlite3_mutex *p) | 释放互斥体变量 |
12 | static void winMutexEnter(sqlite3_mutex *p) | 请求互斥锁,sqlite3_mutex_enter()导致阻塞 |
13 | static int winMutexTry(sqlite3_mutex *p) | 请求互斥锁,sqlite3_mutex_try()返回SQLITE_BUSY |
14 | static void winMutexLeave(sqlite3_mutex *p) | 解锁互斥锁离开临界区 |
15 | sqlite3_mutex_methods const *sqlite3DefaultMutex(void) | 设置默认互斥体变量 |